0d87707e8245dd6629b8fa204ec3994ba763f5bd,core/runtime/source/jetbrains/mps/util/Interner.java,DumbestLRUCache,primCacheObject,#K#K#,150
Before Change
if (transitionalCache.putIfAbsent(canonic, canonic) == null) {
K cached;
cached = firstLevelCache.putIfAbsent(canonic, canonic);
if (cached != null) {
return cached;
}
// current thread has a mutex on 'canonic'
firstLevelQueue.add(canonic);
if (roomLeftFirstLevel.decrementAndGet() <= 0) {
K toRemove = firstLevelQueue.peek();
assert toRemove != null;
if (transitionalCache.putIfAbsent(toRemove, toRemove) == null) {
if (firstLevelQueue.remove(toRemove)) {
boolean removed = firstLevelCache.remove(toRemove, toRemove);
assert removed;
roomLeftFirstLevel.incrementAndGet();
After Change
transitionalCache.remove(toRemove, toRemove);
}
else {
firstLevelQueue.add(toRemove);
}
}